package kgame5.kgu.animation {
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.Dictionary;

/**
 * @author kk
 * 程序控制的动画管理器，管理多个动画
 */
public class AnimationsManager {
	private var mc_efh:Sprite=new Sprite();
	private var dict_anim:Dictionary=new Dictionary();
	
	public function start():void{
		//动画发生器
		mc_efh.addEventListener(Event.ENTER_FRAME, efh);
	}
	//---驱动动画
	private function efh(e:Event):void{
		this.update();
	}
	//添加一个动画到动画执行队列里
	public function addAnim(anim:KAnim):void{
		dict_anim[anim.getName()]=anim;
	}
	//从动画执行队列里删除一个队列
	public function removeAnim(name:String):void{
		var anim:KAnim= dict_anim[name] as KAnim;
		if(anim!=null){
			anim.dispose();
		}
		delete dict_anim[name];
	}
	
	//清除动画，这个用来如果是reset的时候
	public function clear():void{
		for each(var anim:KAnim in dict_anim){
			anim.dispose();
		}
		dict_anim=new Dictionary();
		
		//动画停止
		mc_efh.removeEventListener(Event.ENTER_FRAME, efh);
	}
	
	//这个是每帧都被执行的，默认是执行动画
	public function update():void{
		for each(var anim:KAnim in dict_anim){
			var bOver:Boolean=anim.update();
			if(bOver){//如果动画执行完毕，则清除此动画
				removeAnim(anim.getName());
			}
		}
	}
}
}
